Source: models/community-query-model.js

/**
 * @auther Yuxin Ma
 * @module models/community-query-model
 * @exports CommunityQuery
 */

'use strict';
var $ = require('jquery');
var _ = require('underscore');
var Backbone = require('backbone');
Backbone.$ = $;
//require('backbone-relational');

var Node = require('./node-model');
var NodeCollection = require('../collections/node-collection');
var Filter = require('./query-filter');
var FilterCollection = require('../collections/filter-collection');
var Graph = require('./graph-model');
var CommunitySet = require('./community-set');


var CommunityQuery = Backbone.Model.extend( /** @lends models/CommunityQuery.prototype */ {
    /**
     * 社团查询。
     * @augments Backbone.Model
     * @constructs
     */

    urlRoot: '/query/comm',

    defaults: {
        edgeFilters: new FilterCollection(),
        edgeCondition: 'and',
        vertexFilters: new FilterCollection(),
        vertexCondition: 'and',
        edgeLabels: [],
        vertexLabels: [],

        /**
         * 社团元素的集合。查询发送前为null。
         * @type {?CommunitySet}
         */
        components: null
    },

    initialize: function() {
        /*
         * TODO: 2015.11.16 先用方舟生成的前端数据填充。等后端完成后修改。
         */
    },

    /**
     * 加载前端数据
     * TODO: 2015.11.16 后端完成后删除。
     * @param {object} data - 前端数据所需的参数
     * @param {options} options
     */
    parse: function(data, options) {


        if (data.DEBUG_COMM_FRONTEND === true) {
            this.set('DEBUG_COMM_FRONTEND', true);
        }
    },

    /**
     * 来自https://github.com/jashkenas/backbone/issues/483的最后一段,解决嵌套Model和Collection的toJSON问题。
     * @returns {*}
     */
    toJSON: function() {
        if (this._isSerializing) {
            return this.id || this.cid;
        }
        this._isSerializing = true;
        var json = _.clone(this.attributes);
        _.each(json, function(value, name) {
            _.isFunction((value || "").toJSON) && (json[name] = value.toJSON());
        });
        this._isSerializing = false;
        return json;
    }
});